package cn.tedu.csmall.passport.service.impl;

import cn.tedu.csmall.passport.mapper.RoleMapper;
import cn.tedu.csmall.passport.pojo.vo.RoleListItemVO;
import cn.tedu.csmall.passport.repo.IRoleRedisRepository;
import cn.tedu.csmall.passport.service.IRoleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Iterator;
import java.util.List;

@Service
@Slf4j
public class RoleServiceIpml implements IRoleService {
    @Autowired
    private RoleMapper roleMapper;
    @Autowired
    private IRoleRedisRepository iRoleRedisRepository;

   public List<RoleListItemVO> list(){
       log.debug("开始处理查询角色列表业务");
       List<RoleListItemVO> list = roleMapper.list();
       Iterator<RoleListItemVO> iterator = list.iterator();
       while (iterator.hasNext()){
           RoleListItemVO next = iterator.next();
           if (next.getId()==1){
               iterator.remove();
           }
       }
       iRoleRedisRepository.save(list);
       return iRoleRedisRepository.list();
   }

    @Override
    public void rebuildCache() {
        log.debug("准备删除Redis缓存中的角色数据……");
        iRoleRedisRepository.deleteAll();
        log.debug("删除Redis缓存中的角色数据，完成！");

        log.debug("准备从数据库中读取角色列表……");
        List<RoleListItemVO> list = roleMapper.list();
        log.debug("从数据库中读取角色列表，完成！");

        log.debug("准备将角色列表写入到Redis缓存……");
        iRoleRedisRepository.save(list);
        log.debug("将角色列表写入到Redis缓存，完成！");
    }

}
